package ${package}.utils;

import com.ishansong.common.geohash.GeoHash;

/**
 * Author: sid
 * Date:   17/11/28 下午4:33
 */

public class GeoHashUtils {

    /**
     * 得到
     * @param lat 经度
     * @param lng 纬度
     * @return geoHash的Base32
     */
    public static String getGeoHashWithBase32(Double lat, Double lng){

        GeoHash geoHash = GeoHash.withBitPrecision(lat,lng);

        return geoHash.toBase32();
    }

    /**
     * 检查两个坐标点是否是在同一个位置(相近)
     * @param geoHashString1 位置1
     * @param geoHashString2 位置2
     * @return
     */
    public static boolean isSamePlace(String geoHashString1, String geoHashString2) {
        // 精度最小为8位GeoHash(约34米)
        int maxLength = 8;
        if (geoHashString1.length() > maxLength) {
            geoHashString1 = geoHashString1.substring(0, maxLength);
        }
        if (geoHashString2.length() > maxLength) {
            geoHashString2 = geoHashString2.substring(0, maxLength);
        }

        GeoHash g1 = GeoHash.fromGeohashString(geoHashString1);
        GeoHash g2 = GeoHash.fromGeohashString(geoHashString2);

        return g1.within(g2);
    }
}
